#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qmenu.h"
#include "QToolBar"
#include"qpushbutton.h"
#include "QStatusBar"
#include "qlabel.h"
#include "QTextEdit"
#include "QDockWidget"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //重置窗口大小
    resize(600,400);

    /*---------------菜单栏的创建(菜单栏仅有一个)--------------------*/
    QMenuBar *bar = menuBar();
    //将菜单栏放入窗口中
    setMenuBar(bar);

    //创建菜单
    QMenu *fileMenu = bar->addMenu("文件");
    QMenu *editMenu = bar->addMenu("编辑");
    //创建菜单项
    fileMenu->addAction("新建");
    //菜单项之间的分割符
    fileMenu->addSeparator();
    fileMenu->addAction("打开");

    /*--------工具栏（可以有多个）-----------*/
    QToolBar * toolBar = new QToolBar(this);
    //将工具栏添加进窗口，并设置默认位置
    addToolBar(Qt::LeftToolBarArea,toolBar);
    //设置只允许左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);

    //工具栏的浮动设置
    toolBar->setFloatable(false);
    //工具栏是否能移动（总开关）
    toolBar->setMovable(false);
    //工具栏添加内容
    QAction *newAction = toolBar->addAction("新建");
    QAction *openAction = toolBar->addAction("打开");
    QPushButton *btn = new QPushButton("按钮",this);
    toolBar->addAction(newAction);
    //分割线
    toolBar->addSeparator();
    toolBar->addAction(openAction);
    toolBar->addWidget(btn);

    /*-----------状态栏-----------*/
    //创建状态栏
    QStatusBar *stbar = statusBar();
    //设置到窗口中
    setStatusBar(stbar);
    //放标签控件
    QLabel *label = new QLabel("提示信息",this);
    stbar->addWidget(label);
    QLabel *label2 = new QLabel("右侧提示信息",this);
    stbar->addPermanentWidget(label2);

    /*----------中心部件（以编辑框为例）-----------*/
    //只能一个
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit);//放入窗口

    /*-------------铆接部件（浮动窗口）----------*/
    //可以有多个
    QDockWidget *dockWidget = new QDockWidget("浮动",this);
    //默认位置下方
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
    //后期停靠位置，只允许上下
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);

}

MainWindow::~MainWindow()
{
    delete ui;
}

